package 泛型;

import lombok.Data;
import org.junit.Test;

/**
 * Description
 *
 * @Author: Heiffeng
 * @Date: 2022/4/12 18:09
 */
public class 去除泛型 {


    @Data
    public static class Bucket<T>{
        private T data;
        private String value;

        public Bucket clone(){
            Bucket clone = this;
            clone.setData(null);
            return clone;
        }
    }


    @Test
    public void 去除泛型类型测试(){
        Bucket<String> b = new Bucket<>();
        b.setData("da");
        b.setValue("daa");

        // 方式1
        Bucket b2 = b.clone();
        System.out.println(b2.getData());

        // 方式2
        Bucket b3 = b;
        System.out.println(b3.getData());
    }

    @Test
    public void 转为另一种类型测试(){
        Bucket<String> b = new Bucket<>();
        b.setData("1");
        b.setValue("daa");

        Bucket<Long> b2 = b.clone();
        System.out.println(b2.getValue());
        System.out.println(b2.getData()); // 这里不报错，虽然String转成了Long，但还是按照String去处理的。
        System.out.println(b2.getData().intValue()); // 但你真的按照Long去操作。就报错了
    }
}
